home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 016a / 4dtnt.zip / TODEC.DOC < prev    next >
Text File  |  1991-10-29  |  2KB  |  63 lines

  1. if "%1" == "" .or. "%2" == "" .or. "%[%2]" == "" goto help
  2. set $foo=%@upper[%1]
  3. set $wstr=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
  4.  
  5. iff      %$foo = B then ^ set $foo=2
  6.  elseiff %$foo = O then ^ set $foo=8
  7.  elseiff %$foo = H then ^ set $foo=16
  8.  elseiff %$foo = D then ^ set $foo=10
  9. endiff
  10. iff %$foo gt 1 .and. %$foo lt 37 then ^ gosub base
  11.  else goto help
  12. endiff
  13.  
  14. iff %$val ne 0 then^unset %2 ^ (gosub cleanup^goto helpval)
  15.  else set %2=%$foo ^gosub cleanup^quit 0
  16. endiff
  17. quit
  18.  
  19. :cleanup
  20. unset $foo $wstr $val $max >& nul
  21. return
  22.  
  23. :base
  24. set $max=%$foo
  25. gosub cnvtit
  26. return
  27.  
  28. :cnvtit
  29. set $foo=%@upper[%[%2]]
  30. set $i=%@eval[%@len[%$foo]-1]
  31. set $mult=1
  32. set $accum=0
  33. :cnvtloop
  34. set $val=%@index[%$wstr,%@substr[%[%2],%$i,1]]
  35. if %$val lt 0 .or. %$val ge %$max (set $val=%$max^goto cnvtexit)
  36. set $accum=%@eval[%$accum+%@eval[%$val*%$mult]]
  37. set $mult=%@eval[%$mult*%$max]
  38. set $i=%@eval[%$i-1]
  39. if %$i ge 0 goto cnvtloop
  40. set $foo=%$accum
  41. set $val=0
  42. :cnvtexit
  43. unset $i $mult $accum >& nul
  44. return
  45.  
  46. :helpval
  47. echo Invalid character detected.
  48. echo .
  49. goto help
  50.  
  51. :help
  52. echo Usage: %@name[%0]  mode  var
  53. echo.
  54. echo   var =  Any environment variable whose value is the input
  55. echo   mode = any of:
  56. echo       B=binary    [0-1]
  57. echo       D=decimal   [0-9]
  58. echo       H=hex       [0-F]
  59. echo       O=octal     [0-7]
  60. echo       [2-36]      [0-(n-1)]
  61. echo New value returned in var, replacing original value
  62. quit 4
  63.